using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public abstract class RootMgrBase : IManager
{

    private EntityMgr _entityMgr;
    private NormalSystemMgr _normalSystemMgr;
    private LogicSystemMgr _logicSystemMgr;

    public void Init()
    {
        _normalSystemMgr = new NormalSystemMgr();
        _logicSystemMgr = new LogicSystemMgr();
        _entityMgr = new EntityMgr(_logicSystemMgr.AddEntity);
        InitSystems();
    }

    public void Update()
    {
        _normalSystemMgr.Update();
        _logicSystemMgr.UpdateFun();
    }

    public IEntity CreateEntity()
    {
        return _entityMgr.CreateEntity();
    }


    protected abstract void InitSystems();
    protected void AddInitSystem(IInitSystem system)
    {
        _normalSystemMgr.AddInitSystem(system);
    }

    protected void AddUpdateSyetem(IUpdateSystem system)
    {
        _normalSystemMgr.AddUpdateSystem(system);
    }

    protected void AddLogicSystem(ILogicSystem system)
    {
        _logicSystemMgr.AddLogicSystem(system);
    }

}
